<?php
/*if(!defined('IN_NX')) {
	exit('Access Denied');
}*/
/*php自身的检测函数
*bool is_numeric ( mixed var)
*bool is_bool ( mixed var)
*bool is_null ( mixed var)
*bool is_float ( mixed var)
*bool is_int ( mixed var)
*bool is_string ( mixed var)
*bool is_object ( mixed var)
*bool is_array ( mixed var)
*bool is_scalar ( mixed var)
*string gettype ( mixed var)
*/

/*新添加的检测函数
isDate()     日期检查
isTime()     时间检查
isInt()      整数检查
isNum()      数字检查
isEmail()    邮件检查
isUrl()      url检查
isPost()     邮政编码检查
isPhone()    电话号码检查
isMobile()   移动电话检查
isLen()      长度检查
isIdCard()   身份证检查
isEnglish()  英文检查
isChinese()   简体中文检查
isIP()       IP检查
isQQ()       QQ检查
checkFileType() 文件后缀名检查
isAlnum()	 由字母和数字组成
isAldash()	 由字母数字和下划线组成
isNotNull()	 检查是否不为空
*/
class Valid{
	
	var $msg;
	var $mode = 'back';
	var $page = 'member';

	/*function Validator(){
	}*/
	
	function check($str, $msg, $pattern){
		return @preg_match($pattern,$str)?true : false;
	}

	function isNotNull($var, $pre=''){
		if(is_null($var) || $var=='' || empty($var)){
			return false;
		}
		return true;
	}
    /*
	*方法：bool isDate($str,$format="")
	*作用：检验日期的合法性
	*说明：默认的合法日期格式是以"-"分割的"年-月-日"
	*         当参数$format设置格式时则按照这个格式检验
	*例子：isDate("2006-12-1");isDate("2006-12-1","Y-m-d h:i:s")
	*/
	function isDate($str,$pre,$format=""){
		if($format==""){
			$str=explode("-",$str);
			if(!checkdate($str[1],$str[2],$str[0])){
				return false;
			}else{
				return true;
			}
		}else{
			//按规定的格式检验
            $unixTime=strtotime($str);//转为时间戳
            $checkDate= date($format,$unixTime);
            if($checkDate==$str){return true;}else{return false;}
		}
	}
    
	//时间检查
	function isTime($str,$pre,$format=""){
		if(!$format){
			$str=explode(":",$str);
			if(count($str)!=3) return false;
			for($i=0;$i<=2;$i++){
				if(!@preg_match("/^[0-9]{1,2}$/",$str[$i])) return false;
				if($str[$i]>59) return false;
				if($str[0]>=24) return false;
			}
		}else{
            $unixTime=strtotime($str);//转为时间戳
            $checkDate=date($format,$unixTime);
            if($checkDate!=$str) return false;
		}
		return true;
	}
	//验证表单数据是否是整数(用is_int()验证不了的)
	//前面可以加上可选的符号（- 或者 +）
	function isInt($str, $pre=''){
		$pattern = "/^[-|+]?(([0-9]{1})|([1-9]{1}[0-9]+))$/";
		return @preg_match($pattern,$str)?true : false;
	}
	//验证是否由数字组成,is_numeric()验证包括整数和浮点数
	function isNum($str,$pre=''){
		$pattern = "/^\d+$/";
		return @preg_match($pattern,$str)?true : false;
	}
	//由数字和字母及下划线组
	function isAldash($str,$pre=''){
		$pattern = "/^([-a-z0-9_-])+$/i";
		return @preg_match($pattern,$str)?true : false;
	}
	//由数字字母组成
	function isAlnum($value,$pre=''){
		if(ctype_alnum($value))
			return true;
		else
			return false;
	}
	function isFloat($str,$pre=''){
		//$pattern = "/^[1-9]{1}\d+\.\d+$/";
		//return @preg_match($pattern,$str)?true : $this->msg('isFloat', $pre);
		return is_float($str)?true : false;
	}
	function isNumeric($str, $pre=''){
		return is_numeric($str)?true : false;
	}
	//email检测
	function isEmail($str,$pre=''){
		$pattern="/^[_0-9a-z]+@[0-9a-z-]+(\.[0-9a-z-]+)*\.[a-z]+$/i";
		if(@preg_match($pattern,$str)){return true;}
		return false;
	}
    //URL检测，只检查http形式
	function isUrl($str,$pre=''){
		$pattern="/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"])*$/";
		return @preg_match($pattern,$str) ? true : false;
	}

    //邮政编码,中国邮政编码是6位数字组成
	function isPost($str,$pre=''){
		$pattern="/^\d{6}$/";
		return @preg_match($pattern,$str) ? true : false;
	}
	//电话号码 区号-号码 或 号码 或区号号码
	//0751-8120917||07518120917||8120917
	function isPhone($str,$pre=''){
		$pattern="/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-[1-9]\d{2})?$/";
		return @preg_match($pattern,$str) ? true : false;
	}
	//手机号码区号-号码 或 号码 或区号号码
	function isMobile($str,$pre=''){
		$pattern="/^((\(\d{3}\))|(\d{3}\-))?(13|15|18)\d{9}$/";
		return @preg_match($pattern,$str)?true : false;
	}
	//字符串长度是否在l1和l2之间,即l1<$str<l2
	function isLen($str,$pre,$l1,$l2){
		if(strlen($str)>$l1&&strlen($str)<$l2){return true;}
		return false;
	}
	//身份证号码
	//可以验证15和18位的身份证号码
	function isIdCard($str,$pre=''){
		$isIDCard1="/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{2}[\dx]$/";   
		//身份证正则表达式(18位)   
		$isIDCard2="/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}[\dx]$/";   
		//验证身份证，返回结果 
		return @preg_match($isIDCard1,$str)||@preg_match($isIDCard2,$str) ? true : false;
	}
	//字符串是否全部是英文
	function isEnglish($str,$pre=''){
		$pattern="/^[a-z]+$/i";
		return @preg_match($pattern,$str) ? true : false;
	}
	//是否是简体中文
	function isGB2312($str,$pre=''){
		$pattern="/^[".chr(0xa1)."-".chr(0xff)."]+$/";
		return @preg_match($pattern,$str) ? true : false;
	}
	function isChinese($str,$pre=''){
		$pattern="/^[\x80-\xff]+$/";
		return @preg_match($pattern,$str) ? true : false;
	}
	//是否是繁体中文
	function isBIG5(){}
	//是否GBK
	function isGBK(){}
	//是否是ip
	function isIP($ip,$pre=''){
		$e="(1[0-9]{2}|[1-9]?[0-9]|2[0-4][0-9]|25[0-5])";   
		if(ereg("^$e\.$e\.$e\.$e$",$ip)){
			return true;
		}else{
			return false;
		}
	}
    //是否是QQ  5-10位
	function isQQ($str,$pre=''){
		$pattern="/^[1-9]\d{4,9}$/";
		return @preg_match($pattern,$str) ? true : false;
	}

	//判断是否在字符串中出现某些字符
	function isInStr($str1,$str2){}

	//检查数据提交，有post,get两种方式，是否所有都不为
	function checkRequest($post_or_get,$emptyitems=""){
		if(!is_array($post_or_get)){return false;}
		if(count($post_or_get)==0){return false;}
		$items=explode("|",$emptyitems);
		foreach($post_or_get as $key=>$value){
			if($_REQUEST[$key]==""){
				if(in_array($key,$items)){continue;}else{return false;}
			}
		}
		return true;
	}
}
?>